package com.hyperboost.mapper;

import com.hyperboost.dto.ShareDTO;
import com.hyperboost.dto.SharePageQueryDto;
import com.hyperboost.entity.Share;
import com.hyperboost.result.PageResult;
import com.hyperboost.vo.ShareCommentReplyVO;
import com.hyperboost.vo.ShareVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface ShareMapper {


    /**
     * 新增分享
     *
     * @param shareDTO
     */
    void addShare(ShareDTO shareDTO);

    /**
     * 查询新添加的机会id
     *
     * @return
     */
    Long selectLastId();

    /**
     * 删除分享本体
     *
     * @param shareId
     */
    void deleteShare(Long shareId);

    /**
     * 分页查询所有分享
     *
     * @return
     */
    List<ShareVo> getAllPageShare(SharePageQueryDto sharePageQueryDto);


    /**
     * 评论数+1
     *
     * @param shareId
     */
    void increaseCommentCount(Long shareId);

    /**
     * 评论数-?
     *
     * @param shareId
     * @param deleteCommentCount
     */
    void decreaseCommentCount(Long shareId, int deleteCommentCount);

    /**
     * 分页查询用户自己分享
     *
     * @param sharePageQueryDto
     * @return
     */
    List<ShareVo> getAllPageShareByUserId(SharePageQueryDto sharePageQueryDto, Long userId);

    /**
     * 根据noticeId查询分享
     *
     * @param noticeId
     * @return
     */
    List<ShareVo> getShareByNoticeId(Long noticeId);

    /**
     * 查询该分享，便在该分享的浏览数+1
     *
     * @param shareId
     */
    void getViewCountByShareId(Long shareId);


    /**
     * 根据shareId查询分享
     *
     * @param shareId
     * @return
     */
    ShareVo getShareByShareId(Long shareId);

    /**
     * 根据shareId查询userId
     * @param shareId
     */
    Long getUserIdByShareId(Long shareId);
}
